#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=2005;
const int INF=0x3f3f3f3f;
int n,m;
ll x;
int a[N],b[N];
int preA[N],preB[N];
//长度为i的子区间的最小值
int sumA[N],sumB[N];
int main(void){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        preA[i]=preA[i-1]+a[i];
    }
    for(int i=1;i<=m;i++){
        scanf("%d",&b[i]);
        preB[i]=preB[i-1]+b[i];
    }
    scanf("%lld",&x);
    memset(sumA,INF,sizeof(sumA));
    memset(sumB,INF,sizeof(sumB));
    for(int i=1;i<=n;i++){
        for(int j=1;i+j-1<=n;j++){
            sumA[j]=min(sumA[j],preA[i+j-1]-preA[i-1]);
        }
    }
    for(int i=1;i<=m;i++){
        for(int j=1;i+j-1<=m;j++){
            sumB[j]=min(sumB[j],preB[i+j-1]-preB[i-1]);
        }
    }
    // for(int i=1;i<=n;i++){
    //     printf("%d ",sumA[i]);
    // }
    // printf("\n");
    // for(int i=1;i<=m;i++){
    //     printf("%d ",sumB[i]);
    // }
    // printf("\n");
    int ans=0;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(ll(sumA[i])*sumB[j]<=x){
                ans=max(ans,i*j);
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}